package code04_循环结构;

import java.util.Scanner;

/**
 * @author 黄衡熙
 * @version 1.0
 * @date 2025年07月17日9:43
 */
public class Test16_打印菱形 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入菱形的行数(必须是奇数):");
        int rows = sc.nextInt();
        if (rows % 2 == 0) {
            System.out.println("错误:您输入的是一个偶数,无法组成一个菱形,请重新输入!");
        } else {
            // 可以将一个菱形拆分为两部分
            // 上半部分是一个等腰三角形,下半部分是一个倒等腰三角形
            // 先打印上半部分,后打印下半部分

            // 打印上半部分,将中间一行作为上半部分的内容
            // 此时总行数为:rows/2+1
            int rows1 = rows / 2 + 1;
            for (int i = 1; i <= rows1; i++) {
                for (int j = 1; j <= rows1 - i; j++) {
                    System.out.print("  ");
                }
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("* ");
                }
                System.out.println();
            }
            // 打印下半部分,此时总行数为:rows/2
            int rows2 = rows / 2;
            for (int i = 1; i <= rows2; i++) {
                // 先打印空格
                // 由于下半部分没有定格,因此比正常的倒等腰三角形多了一个空格
                for (int j = 1; j <= i; j++) {
                    System.out.print("  ");
                }
                // 后打印星号
                for (int j = 1; j <= 2 * (rows2 - i) + 1; j++) {
                    System.out.print("* ");
                }
                // 内层循环结束后换行
                System.out.println();
            }

        }
    }

}